package com.sfpay.coreplatform.order.service.proxy.account;

import java.util.List;
import java.util.Map;

import com.sfpay.coreplatform.account.valueobject.dto.TallySerialQuery;
import com.sfpay.coreplatform.account.valueobject.dto.Transfer;
import com.sfpay.coreplatform.account.valueobject.tmo.AccountVO;
import com.sfpay.coreplatform.account.valueobject.tmo.TallySerial;
import com.sfpay.coreplatform.order.service.exception.OrderServiceException;
import com.sfpay.framework.base.pagination.IPage;

public interface IAccountMgrProxyService {
	
	/**
	 * 方法说明：根据账户编号查找账户信息
	 * @param accNo
	 * @return
	 * @throws OrderServiceException
	 */
	public AccountVO findAccountInfoByAccountNo(Long accNo) throws OrderServiceException;
	
	/**
	 * 方法说明：根据账户编号查找账户信息，适用于小量获取数据。
	 * @param accNoList 账户编号组成的LIST
	 * @return  Map<String,AccountVO>:
	 * 				String: 账户编号
	 * 				AccountVO：账户信息
	 * @throws OrderServiceException
	 */
	public Map<Long,AccountVO> findAccountInfo(List<Long> accNoList) throws OrderServiceException;
	
	/**
	 * 方法说明：<br>
	 * 记账流水查询
	 *
	 * @param tallySerialQuery 记账流水查询对象
	 * @return
	 * @throws OrderServiceException
	 */
	public List<TallySerial> findTallySerial(TallySerialQuery tallySerialQuery) throws OrderServiceException; 
	
	
	/**
	 * 方法说明:查询账户记账流水列表
	 * @param queryData
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws OrderServiceException
	 */
	public  IPage<TallySerial> queryTallySerial(TallySerialQuery queryData, int pageNo, int pageSize) throws  OrderServiceException;
	
	/**
	 * 方法说明：转账（需要支付密码）
	 * @param transfer
	 * @return
	 * @throws OrderServiceException
	 */
	public void transfer(Transfer transfer) throws OrderServiceException;
	
	
	/**
	 * 方法说明：转账（不需要支付密码）
	 * @param transfer
	 * @return
	 * @throws OrderServiceException
	 */
	public void transferWithoutPsw(Transfer transfer) throws OrderServiceException;

	
	
	
}
